/*
 * RtpSound.cpp
 *
 *  Created on: 2018年8月27日
 *      Author: zhengboyuan
 */

#include "RtpSound.h"

#include "SoundApplication.h"

CRtpSoundPtr getRtpSound(int handle)
{
    return SoundApplication::instance().get(handle);
}



/**
 * 初始化
 * @return 0 表示成功
 */
DLLEXPORT int rtpsound_init()
{
    SoundApplication::instance().init();

    return 0;
}

/**
 * 反初始化
 * @return
 */
DLLEXPORT void rtpsound_quit()
{
    SoundApplication::instance().quit();
}

/**
 * 打开rtp播放器
 * @param port  本地传输端口
 * @param codec     音频编码
 * @param channels  音频通道数
 * @param samplerate    音频采样率
 * @return  句柄, -1 表示失败.
 */
DLLEXPORT int rtpsound_open(int port, int codec, int channels, int samplerate)
{
    CRtpSoundPtr sound(new CRtpSound());
    int rc = sound->open(port, codec, channels, samplerate);
    if (rc != 0)
    {
        return -1;
    }

    return SoundApplication::instance().put(sound);
}

/**
 * 关闭rtp播放器
 * @param handle
 */
DLLEXPORT void rtpsound_close(int handle)
{
    CRtpSoundPtr sound = SoundApplication::instance().remove(handle);
    if (!sound)
    {
        return;
    }

    sound->close();
}

/**
 * 设置音量
 * @param handle
 * @param volume    音量, 取值范围[0,1]
 * @return
 */
DLLEXPORT int rtpsound_setVolume(int handle, float volume)
{
    CRtpSoundPtr sound = getRtpSound(handle);
    if (!sound)
    {
        return ENOENT;
    }

    sound->setVolume(volume);
    return 0;
}

/**
 * 获取音量
 * @param handle
 * @return 音量, 取值范围为[0,1]
 */
DLLEXPORT float rtpsound_getVolume(int handle)
{
	float volume = 0;
    CRtpSoundPtr sound = getRtpSound(handle);
    if (!sound)
    {
        return volume;
    }

    volume = sound->getVolume();
    return volume;
}
